package gr.uop.cst.context.base;

import java.io.Serializable;

/**
 *
 * @param <T> 
 * @author Ioannis Bourlakos <mi49@uop.gr>
 */
public interface ContextEvaluatable<T> extends Serializable {
    
    /**
     * 
     * @return
     * @throws ContextEvaluationException
     */
    T getCurrentValue() throws ContextEvaluationException;
    
    /**
     * 
     * @return
     */
    ContextValueStatus getCurrentValueStatus();

    /**
     * 
     * @param l
     */
    void addContextValueListener(ContextValueListener<T> l);

    /**
     * 
     * @param l
     */
    void removeContextValueListener(ContextValueListener<T> l);
    
}
